#Boa:Frame:FUNuevo

import wx
import psycopg2
import sys
import pprint
import time
import os
import commands
import stat
from threading import Timer


def create(parent):
    return FUNuevo(parent)

[wxID_FUNUEVO, wxID_FUNUEVOBHUELLA, wxID_FUNUEVOBINGRESAR, wxID_FUNUEVOBMENU, 
 wxID_FUNUEVOLISTACURSOS, wxID_FUNUEVOPANEL1, wxID_FUNUEVOROL, 
 wxID_FUNUEVOSTATICTEXT1, wxID_FUNUEVOSTATICTEXT2, wxID_FUNUEVOSTATICTEXT3, 
 wxID_FUNUEVOSTATICTEXT4, wxID_FUNUEVOTEXTCODIGO, wxID_FUNUEVOTEXTNOMBRE, 
] = [wx.NewId() for _init_ctrls in range(13)]

#_____________________________________________________________________________________________________
#___________________________ABC TABLA Usuario
#INSERT
def insert_usuario(cod,nomb,ape,cur):
	conn_string = "host='localhost' port='5432' dbname='DB778' user='postgres' password='123456789'" 
	conn = psycopg2.connect(conn_string)
	cursor = conn.cursor()
	cursor.execute("""INSERT INTO catedratico(
                    codigo_catedratico, nombre, id_tipo)
    VALUES (%s, %s, %s)""", (cod,nomb,ape+1))
	conn.commit()
	for c in cur:
	    otra=c.split(',')
	    cursor.execute("""INSERT INTO curso_catedratico(
                    codigo_catedratico,codigo_curso,anio,semestre)
        VALUES (%s, %s, %s, %s)""", (cod,otra[0],time.strftime("%Y"),time.strftime("%m")))
        conn.commit()
	cursor.close()
	conn.close()
		
class FUNuevo(wx.Frame):
    codigo=''
    Codigo_catedratico=0
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Frame.__init__(self, id=wxID_FUNUEVO, name=u'FUNuevo', parent=prnt,
              pos=wx.Point(506, 167), size=wx.Size(588, 427),
              style=wx.DEFAULT_FRAME_STYLE, title=u'Nuevo Usuario')
        self.SetClientSize(wx.Size(588, 427))

        self.panel1 = wx.Panel(id=wxID_FUNUEVOPANEL1, name='panel1',
              parent=self, pos=wx.Point(0, 0), size=wx.Size(588, 427),
              style=wx.TAB_TRAVERSAL)

        self.staticText1 = wx.StaticText(id=wxID_FUNUEVOSTATICTEXT1,
              label=u'Nombre', name='staticText1', parent=self.panel1,
              pos=wx.Point(24, 54), size=wx.Size(66, 18), style=0)
        self.staticText1.SetFont(wx.Font(11, wx.SWISS, wx.NORMAL, wx.BOLD,
              False, u'Sans'))

        self.textNombre = wx.TextCtrl(id=wxID_FUNUEVOTEXTNOMBRE,
              name=u'textNombre', parent=self.panel1, pos=wx.Point(105, 50),
              size=wx.Size(431, 30), style=0, value=u'')
        self.textNombre.SetFont(wx.Font(11, wx.SWISS, wx.NORMAL, wx.NORMAL,
              False, u'Sans'))

        self.staticText2 = wx.StaticText(id=wxID_FUNUEVOSTATICTEXT2,
              label=u'Tipo', name='staticText2', parent=self.panel1,
              pos=wx.Point(85, 105), size=wx.Size(69, 18), style=0)
        self.staticText2.SetFont(wx.Font(11, wx.SWISS, wx.NORMAL, wx.BOLD,
              False, u'Sans'))

        self.staticText3 = wx.StaticText(id=wxID_FUNUEVOSTATICTEXT3,
              label=u'Codigo', name='staticText3', parent=self.panel1,
              pos=wx.Point(24, 20), size=wx.Size(59, 18), style=0)
        self.staticText3.SetFont(wx.Font(11, wx.SWISS, wx.NORMAL, wx.BOLD,
              False, u'Sans'))

        self.textCodigo = wx.TextCtrl(id=wxID_FUNUEVOTEXTCODIGO,
              name=u'textCodigo', parent=self.panel1, pos=wx.Point(105, 15),
              size=wx.Size(431, 30), style=0, value=u'')
        self.textCodigo.SetFont(wx.Font(11, wx.SWISS, wx.NORMAL, wx.NORMAL,
              False, u'Sans'))

        self.bingresar = wx.Button(id=wxID_FUNUEVOBINGRESAR, label=u'Ingresar',
              name=u'bingresar', parent=self.panel1, pos=wx.Point(155, 375),
              size=wx.Size(105, 40), style=0)
        self.bingresar.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.BOLD, False,
              u'Sans'))
        self.bingresar.Bind(wx.EVT_BUTTON, self.OnBingresarButton,
              id=wxID_FUNUEVOBINGRESAR)

        self.bmenu = wx.Button(id=wxID_FUNUEVOBMENU, label=u'Atras',
              name=u'bmenu', parent=self.panel1, pos=wx.Point(27, 375),
              size=wx.Size(105, 40), style=0)
        self.bmenu.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.BOLD, False,
              u'Sans'))
        self.bmenu.Bind(wx.EVT_BUTTON, self.OnBmenuButton, id=wxID_FUNUEVOBMENU)

        self.rol = wx.RadioBox(choices=['Administrador', 'Usuario'],
              id=wxID_FUNUEVOROL, label='Rol', majorDimension=1, name=u'rol',
              parent=self.panel1, pos=wx.Point(25, 125), size=wx.Size(184, 96),
              style=wx.RA_SPECIFY_COLS)
        self.rol.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.BOLD, False,
              u'Sans'))

        self.listacursos = wx.CheckListBox(choices=['795,Logica de Sistemas',
              '770,Intr. a la Programacion y Computacion 1',
              '796,Lenguajes Formales y de Prog.',
              '962,Intr. a la Prog. y Computacion 2',
              '777,Org. Lenguajes y Compiladores 1',
              '964,Organizacion Computacional', '772,Estructura de Datos',
              '722,Teoria de Sistemas', '014,Economia',
              '781,Org. Lenguajes y Compiladores 2',
              '778,Arq. Compu y Ensambladores 1',
              '773,Manejo e implementacion de Archivos',
              '724,Teoria de Sistemas 2', '281,Sistemas Operativos 1',
              '779,Arq. Compu y Ensambladores 1', '970,Redes de Computadoras 1',
              '774,Sistemas de Bases de Datos 1', '2036,Practica Intermedia',
              '2025,Practica Inicial', '285,Sistemas Operativos 2',
              '975,Redes de Computadoras 2', '775,Sistemas de Bases de Datos 2',
              '283,Analisis y diseno de Sistemas 1',
              '797,Seminario de Sistemas 1', '729,Modelacion y Simulacion 1',
              '786,Sistemas Org. y gerenciales 1',
              '790,Emprendedores de Neg. Informaticos',
              '972,Inteligencia Artificial 1',
              '966,Seguridad y Auditoria de redes',
              '785,Analisis y diseno de Sistemas 2', '788,Sistemas Aplicados 1',
              '738,Bases de Datos Avanzadas', '798,Seminario de Sistemas 2',
              '799,Seminario de Investigacion', '2037,Practica Final',
              '787,Sistemas Org. y gerenciales 2',
              '720,Modelacion y Simulacion 2', '968,Inteligencia Artificial 2',
              '974,Redes de Nueva generacion', '780,Software Avanzado',
              '789,Sistemas Aplicados 2', '735,Auditoria de Proy. de Software'],
              id=wxID_FUNUEVOLISTACURSOS, name=u'listacursos',
              parent=self.panel1, pos=wx.Point(264, 128), size=wx.Size(320,
              288), style=0)
        self.listacursos.SetFont(wx.Font(11, wx.SWISS, wx.NORMAL, wx.BOLD,
              False, u'Sans'))

        self.staticText4 = wx.StaticText(id=wxID_FUNUEVOSTATICTEXT4,
              label=u'Cursos', name='staticText4', parent=self.panel1,
              pos=wx.Point(375, 96), size=wx.Size(72, 23), style=0)
        self.staticText4.SetFont(wx.Font(14, wx.SWISS, wx.NORMAL, wx.BOLD,
              False, u'Sans'))

        self.bhuella = wx.Button(id=wxID_FUNUEVOBHUELLA,
              label=u'Registrar Huella Digital', name=u'bhuella',
              parent=self.panel1, pos=wx.Point(25, 256), size=wx.Size(200, 50),
              style=0)
        self.bhuella.SetFont(wx.Font(11, wx.SWISS, wx.NORMAL, wx.BOLD, False,
              u'Sans'))
        self.bhuella.Bind(wx.EVT_BUTTON, self.OnBhuellaButton,
              id=wxID_FUNUEVOBHUELLA)

    def __init__(self, parent,cod):
        global codigo
        global Codigo_catedratico
        codigo=cod
        Codigo_catedratico=cod
        self._init_ctrls(parent)

    def OnBingresarButton(self,event):
        if self.textCodigo!='' and self.textNombre!='':
            cursos=self.listacursos.GetCheckedStrings()
            insert_usuario(self.textCodigo.GetValue (), self.textNombre.GetValue (), self.rol.GetSelection(),cursos)
            dlg = wx.MessageDialog(self, 'Datos Guardado\t\n' 'Recuerde sus datos:\t\n'+'\tUsuario:\t'+self.textNombre.GetValue ()+'\t\n'+'\tCodigo:\t'+self.textCodigo.GetValue (),'',
            wx.OK | wx.ICON_INFORMATION)
            dlg.ShowModal()
            dlg.Destroy()
            self.textCodigo.SetValue('')
            self.textNombre.SetValue('')
            for cb in self.listacursos.Checked:
                self.listacursos.Check(cb, False)
            #self.Close(True)
        event.Skip()

    def OnBmenuButton(self, event):
        self.Close(True)
        event.Skip()

    def OnBhuellaButton(self, event):
	cod=''
	cod=self.textCodigo.GetValue()
	if cod!='':
		dlg = wx.MessageDialog(self, 'Coloque Huella por 10 Seg', 'Info' )
        	wx.FutureCall(5000,dlg.Destroy)
        	dlg.ShowModal()
		time.sleep(2)
		os.system("./run.sh")
		#os.system("sudo huella/run.sh")
		#os.system("./Scan")
		#os.system("mv frame_Ex.bmp 1.bmp")
		os.system("mkdir huella/"+cod)
		os.system("cp huella/CONVER/S1.xyt huella/"+cod)
		os.system("cp huella/CONVER/S2.xyt huella/"+cod)
		os.system("cp huella/CONVER/S3.xyt huella/"+cod)
		dlg1 = wx.MessageDialog(self, 'Huella Digital Registrada', 'Info', wx.OK | wx.ICON_INFORMATION)
        	wx.FutureCall(3000,dlg1.Destroy)
        	dlg1.ShowModal()
        event.Skip()
